#!/bin/bash  

# 定义编译器和目标路径变量  
arm_gcc="arm-linux-gnueabihf-gcc"  # 使用下划线代替连字符  
# 提示用户输入参数  
echo "input [exec] [operate] [app]"  
operate="$1"  
app="$2"  
arm_Board="$HOME/nfs/rootfs/work/"  # 使用 $HOME 环境变量代替 ~  

# 输出操作变量的值  
echo "操作: $operate"  

# 判断第一个参数是否为空或为 "make"  
if [ -z "$operate" ] || [ "$operate" == "make" ]; then  
    echo "执行 make 过程"  

    # 执行 make 命令  
    make  
    # 检查 make 命令的执行结果  
    if [ $? -ne 0 ]; then  
        echo "make 执行失败"  
        exit 1  # 如果 make 失败，退出脚本  
    fi  

    # 拷贝 .ko 文件到指定路径  
    cp ./*.ko "$arm_Board"  
    echo "拷贝 .ko 文件成功到 $arm_Board"  
    
    # 如果 make 成功，并且有第二个参数，则编译相应的应用程序  
    if [ -n "$app" ]; then  
        ${arm_gcc} "${app}.c" -o "${app}"  
        # 检查编译结果  
        if [ $? -ne 0 ]; then  
            echo "应用程序 ${app} 的编译失败"  
            exit 2  # 如果编译失败，退出脚本  
        fi  
        
        # 拷贝编译后的应用程序到目标路径  
        cp "${app}" "$arm_Board"  
        echo "应用程序 ${app} 拷贝成功到 $arm_Board"  
    else  
        echo "未提供应用程序名称，跳过编译"  
    fi  
else  
    # 如果第一个参数非空且为 "rm"  
    if [ "$operate" == "rm" ]; then  
        echo "参数: $operate"  
        make clean  
        if [ -n "$app" ]; then  
            rm -f "${app}"  # 强制删除应用程序文件  
            echo "已删除应用程序 ${app}"  
        else  
            echo "未提供应用程序名称，跳过删除"  
        fi  
    else  
        echo "未知操作: $operate"  
    fi  
fi